Comparación de los modelos

Se realizan test estadísticos sobre los resultados en train de los modelos y posteriormente se aplica el algoritmo de decisión multicriterio

Visualización de los errores

En esta primera sección visualizamos de forma gráfica y numérica los errores cometidos en las predicciones tanto en training (en cada uno de los pliegues) como en test en la predicción t. De esta forma podremos apoyarnos en los resultados para detectar modelos que pueden estar haciendo overfitting

RMSE

Lectura de los datos y descripción estadística

MAE

Lectura de los datos y descripción estadística

CC

Lectura de los datos y descripción estadística

Gráficas Train VS Test + Errores

Como hemos comentado, nos apoyaremos en las gráficas y en aquellos modelos para los que haya una diferencia de 0.20 o más entre las predicciones de train y test, que consideraremos que están haciendo overfitting

A simple vista, parece que hay dos modelos que están sobre entrenando, en ambos casos de lag. Estos son Random Forest y Gradient Boosting Regressor (GBR). Veamos numéricamente la diferencia entre los errores. Aquellos cuya diferencia sea de un valor >= 0.2 consideraremos que están sobre entrenando

Aunque podemos ver como en MAE las diferencias no parecen muy significativas, si que lo hacen en el caso del RMSE. Además, como podríamos esperar, estos modelos coinciden con los detectados en las gráficas

Errores en las predicciones sobre los datos de test

Análisis estadístico

Aplicamos los análisis estadísticos sobre las tres métricas consideradas, para ver si se encuentran diferencias significativas entre los modelos. Descartamos los modelos que sufren overfitting

Detectamos los modelos que han hecho overfitting y los eliminamos

RMSE

Aplicamos el test de Shapiro Wilk, la hipóstesis nula es H0: los datos siguen una distribución normal

Como todos los p-valores > 0.05, al 95% de confianza podemos decir que siguen una distribución normal. Lo vemos gráficamente

Aplicamos el test de Mauchly para comprobar la esfericidad

El test de Mauchly puede no funcionar en Python. Se aplica de nuevo sobre los datos en R y se obtiene un p-valor inferior a 0.05 así que con un 95% de confianza rechazamos la hipótesis nula de que se cumple la esfericidad de la matriz de covarianzas. Debemos de seguir entonces con el test de Friedman y si éste detecta diferencias significativas, con el de Nemenyi

Podemos afirmar al 95% de confianza que existen diferencias significativas entre los modelos, aplicamos el test de Nemenyi

El test de Nemenyi no detecta ninguna diferencia significativa. Podemos verlo al ser todas las celdas mayores que 0.05

MAE

Seguiremos el mismo procedimiento que con RMSE

De nuevo detecta que siguen todos una distribución normal

De nuevo aplicamos el test de Mauchly para comprobar la esfericidad de la matriz de covarianzas

Igual que con RMSE, probamos en R y el p-valor es inferior al valor de significancia, con lo que rechazamos la hipótesis nula

De nuevo, un p-valor por debajo del nivel de significancia permite afirmar al 95% de confianza que existen diferencias significativas entre los modelos. Veamos si las detecta Nemenyi

Según el test de Nemenyi, existen diferencias significativas en un par de modelos, Elastic_Net_Lag5 y SVR_Lag_3

CC

De nuevo, los modelos siguen una distribución normal

Veamos si el test de Friedman de Chi Square indica que hay diferencias significativas

El p-valor > 0.05 así que aceptamos H0: no existen diferencias significativas

Algoritmo de Decisión Multicriterio

Los test estadísticos no son concluyentes, pues aunque si apuntan a que existen algunas diferencias entre ciertos pares de modelos, no son detectables. Por ello, aplicamos el algoritmo de decisión multicriterio sobre los datos de test.

Transformamos las tablas, creando un dataframe para cada modelo donde se incluyan las tres métricas

Mostramos a continuación las gráficas de los modelos que muestran la evolución de RMSE, MAE y CC a lo largo de las predicciones

Para trabajar con el algoritmo de decisión multicriterio necesitamos normalizar los datos

Mostramos los resultados obtenidos en cada modelo

Nos quedamos con el mínimo de los valores obtenidos, este será nuestro mejor modelo